/**
 *
 */
package com.newer.biz.sys.role;

import com.newer.commons.result.BizResult;
import com.newer.dao.bean.sys.Menu;
import com.newer.dao.bean.sys.Role;
import com.newer.dao.bean.sys.RolePermission;

import java.util.List;

/**
 * 角色信息操作业务类
 *
 * @author xuntj
 * @create 2018-03-20 9:08
 **/
public interface RoleInfoBiz {

    /**
     * 查询角色信息列表
     *
     * @param query
     * @return
     */
    BizResult<Role> queryRoleInfoByPage(Role query);

    /**
     * 查询角色信息
     *
     * @param roleId
     * @return
     */
    BizResult<Role> queryRoleInfoById(String roleId);


    /**
     * 查询角色-菜单信息数据
     *
     * @param roleId
     * @return
     */
    BizResult<Menu> queryRoleMenuInfos(String roleId);


    /**
     * 根据角色Id查询权限信息
     *
     * @param roleId
     * @return
     */
    BizResult<RolePermission> queryRolePermissionByRoleId(String roleId);


    /**
     * 角色信息相关操作
     *
     * @param role
     * @param menuIds
     * @param permissionIds
     * @return
     */
    BizResult<Role> operateRoleInfo(Role role, List<String> menuIds, List<String> permissionIds);


    /**
     * 根据角色Id查询菜单信息,并标识哪些菜单已拥有
     *
     * @param roleId
     * @return
     */
    BizResult<Menu> queryRoleMenuCheckedInfos(String roleId);


    /**
     * 异步校验角色Code
     *
     * @param roleCode
     * @return
     */
    BizResult<String> checkRoleCodeExits(String roleCode);

    /**
     * 根据角色Id删除角色
     *
     * @param role
     * @return
     */
    BizResult<?> delRoleById(Role role);
}
